home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 748 / 748.xpi / content / miscapis.js < prev    next >
Text File  |  2010-02-11  |  3KB  |  125 lines

  1. function GM_ScriptStorage(script) {
  2.   this.prefMan = new GM_PrefManager(["scriptvals.",
  3.                                      script.namespace,
  4.                                      "/",
  5.                                      script.name,
  6.                                      "."].join(""));
  7. }
  8.  
  9. GM_ScriptStorage.prototype.setValue = function(name, val) {
  10.   if (2 !== arguments.length) {
  11.     throw new Error("Second argument not specified: Value");
  12.   }
  13.  
  14.   if (!GM_apiLeakCheck("GM_setValue")) {
  15.     return;
  16.   }
  17.  
  18.   this.prefMan.setValue(name, val);
  19. };
  20.  
  21. GM_ScriptStorage.prototype.getValue = function(name, defVal) {
  22.   if (!GM_apiLeakCheck("GM_getValue")) {
  23.     return undefined;
  24.   }
  25.  
  26.   return this.prefMan.getValue(name, defVal);
  27. };
  28.  
  29. function GM_Resources(script){
  30.   this.script = script;
  31. }
  32.  
  33. GM_Resources.prototype.getResourceURL = function(name) {
  34.   if (!GM_apiLeakCheck("GM_getResourceURL")) {
  35.     return undefined;
  36.   }
  37.  
  38.   return this.getDep_(name).dataContent;
  39. };
  40.  
  41. GM_Resources.prototype.getResourceText = function(name) {
  42.   if (!GM_apiLeakCheck("GM_getResourceText")) {
  43.     return undefined;
  44.   }
  45.  
  46.   return this.getDep_(name).textContent;
  47. };
  48.  
  49. GM_Resources.prototype.getDep_ = function(name) {
  50.   var resources = this.script.resources;
  51.   for (var i = 0, resource; resource = resources[i]; i++) {
  52.     if (resource.name == name) {
  53.       return resource;
  54.     }
  55.   }
  56.  
  57.   throw new Error("No resource with name: " + name); // NOTE: Non localised string
  58. };
  59.  
  60. function GM_ScriptLogger(script) {
  61.   var namespace = script.namespace;
  62.  
  63.   if (namespace.substring(namespace.length - 1) != "/") {
  64.     namespace += "/";
  65.   }
  66.  
  67.   this.prefix = [namespace, script.name, ": "].join("");
  68. }
  69.  
  70. GM_ScriptLogger.prototype.log = function(message) {
  71.   GM_log(this.prefix + message, true);
  72. };
  73.  
  74. GM_ScriptStorage.prototype.deleteValue = function(name) {
  75.   if (!GM_apiLeakCheck("GM_deleteValue")) {
  76.     return undefined;
  77.   }
  78.  
  79.   return this.prefMan.remove(name);
  80. };
  81.  
  82. GM_ScriptStorage.prototype.listValues = function() {
  83.   if (!GM_apiLeakCheck("GM_listValues")) {
  84.     return undefined;
  85.   }
  86.  
  87.   return this.prefMan.listValues();
  88. };
  89.  
  90. function GM_addStyle(doc, css) {
  91.   var head = doc.getElementsByTagName("head")[0];
  92.   if (head) {
  93.     var style = doc.createElement("style");
  94.     style.textContent = css;
  95.     style.type = "text/css";
  96.     head.appendChild(style);
  97.   }
  98.   return style;
  99. }
  100.  
  101. function GM_console(script) {
  102.   // based on http://www.getfirebug.com/firebug/firebugx.js
  103.   var names = [
  104.     "debug", "warn", "error", "info", "assert", "dir", "dirxml",
  105.     "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile",
  106.     "profileEnd"
  107.   ];
  108.  
  109.   for (var i=0, name; name=names[i]; i++) {
  110.     this[name] = function() {};
  111.   }
  112.  
  113.   // Important to use this private variable so that user scripts can't make
  114.   // this call something else by redefining <this> or <logger>.
  115.   var logger = new GM_ScriptLogger(script);
  116.   this.log = function() {
  117.     logger.log(
  118.       Array.prototype.slice.apply(arguments).join("\n")
  119.     );
  120.   };
  121. }
  122.  
  123. GM_console.prototype.log = function() {
  124. };
  125.